/* 
 * File:   StaticObject.h
 * Author: Piotrek
 *
 * Created on 12 czerwiec 2010, 14:54
 */

#ifndef _STATICOBJECT_H
#define	_STATICOBJECT_H

#include "Module.h"
#include "RAPID/RAPID.H"
#include "stdafx.h"
#include "CollisionDetection.h"
#include "RobotCollisionXmlDoc.h"


/**
* @brief struktura reprezentujaca kolor danego obiektu
*/
class ObjectColor {
	
public:
	ObjectColor() {R = G = B = alpha = 1.0f;}
	float R;
	float G;
	float B;
	float alpha;
};

/**
 * @brief Klasa reprezentujaca obiekt statyczny. Po tej klasie dziedziczy klasa Robot.
 */
class StaticObject : public CollisionDetection {
public:

    /**
     * @brief konstruktor pusty dla potrzeb dziedziczenia StaticObject : Robot
     */
    StaticObject();
	virtual ~StaticObject(){}

    /// rysowanie modeli w środowisku OpenGL
    void StaticObject::draw(float R, float G, float B, float alpha);

	/**
	* brief konstruktor StaticObject dla wczytanego dokumentu xml
	* @param RobotCollisionXmlDoc^ xmlDoc
	* @param System::String^ globalFilepath - sciezka do folderu w którym znajdują się pliki *.stl
	*/
	StaticObject::StaticObject(RobotCollisionXmlDoc^ xmlDoc, System::String^ globalFilepath);
	
	/// kolor oraz przezroczystosc obiektu
	ObjectColor objectColor;

	/** 
	* Funkcja orzekajaca w zależności od hierarchii dziedziczenia, 
	* czy należy rysować dodatkowe, przeźroczyste prostopadłościany dookoła poszczególnych modułów 
	* @param 
	* @return bool
	*/
	virtual bool drawCubedModules() const;
};


#endif	/* _STATICOBJECT_H */

